/**
 * @Project : algorithm-learning
 * @Author : Ruoyu Wang
 * @User : MyComputer
 * @DateTime : 2024/3/23 9:47
 */

//小美拿到了一个n行m列的矩阵，她想知道该矩阵有多少个2*2的子矩形满足1和0的数量相等?
//
//输入描述
//  第一行输入两个正整数1,用空格隔开接下来的几行，每行输入一个长度为n,m的01串，用来表示矩阵。
//  2≤ n,m ≤100
//输出描述
//  一个整数，代表1和0的数量相等的2*2的子矩形数量。
//
//示例1
//输入
//2 3
//110
//010
//输出
//1
//说明
//  两个2*2的子矩形，只有一个是合法的。

#include <iostream>

using namespace std;

int main() {
    int m, n;
    scanf("%d%d", &m, &n);
    char s[m][n];
    for (int i = 0; i < m; ++i) {
        scanf("%s", s[i]);
    }
    int res = 0;
    for (int i = 0; i < m - 1; ++i) {
        for (int j = 0; j < n - 1; ++j) {
            int tmp = s[i][j] + s[i][j + 1] + s[i + 1][j] + s[i + 1][j + 1] - 4 * '0';
            if (tmp == 2) res++;
        }
    }
    printf("%d", res);
    return 0;
}